package gestion_des_note;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;

import java.util.*;

public class Affiche_note extends JDialog  {
  private JPanel jPanel1 = new JPanel();
  private JLabel jlblTitre = new JLabel();
  
  Classe cls = new Classe();
  Cours cour = new Cours();
  boolean trouve=false;
  private JScrollPane jScrollPane1 = new JScrollPane();
  private JTable jTable1 ;
  private TitledBorder titledBorder1;
  private JButton jbtnRetour = new JButton();
  public Affiche_note() {
    try {
  // saisir la filier � afficher
      String fil1=InputFilier() ;
   int grp=0;
   double moyenne;
   if(fil1!="")
     grp=InputGroup(fil1);
   if(grp!=0)
   {
       // si la filier et le group sont existe
	    String libelle =  InputLibelle(fil1,grp);
	   
        //on va remplir le jTable1 par les information sur les eleve de la calsse saisi
        show();
        remplir(fil1,grp,libelle);
        jlblTitre.setText("Voici les Eleves de la filiere  :"+fil1+", Niveau :  "+grp+ "et leurs note de "+libelle);
        
   }

      jbInit();

    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  private void jbInit() throws Exception {
    titledBorder1 = new TitledBorder("");
    jPanel1.setBackground(Color.white);
    jPanel1.setBorder(BorderFactory.createLineBorder(Color.black));
    jPanel1.setLayout(null);
    jlblTitre.setFont(new java.awt.Font("Dialog", 1, 14));
    jlblTitre.setBorder(BorderFactory.createLineBorder(Color.black));
    jlblTitre.setOpaque(true);
    jlblTitre.setBounds(new Rectangle(21, 36, 800, 28));
    this.addWindowListener(new java.awt.event.WindowAdapter() {
      public void windowOpened(WindowEvent e) {

      }
    });
    jScrollPane1.getViewport().setBackground(SystemColor.inactiveCaptionBorder);
    jScrollPane1.setBorder(BorderFactory.createLineBorder(Color.black));
    jScrollPane1.setBounds(new Rectangle(7, 106, 800, 200));
    this.setResizable(true);
    this.setTitle("                           Afficher classe   :");
    jbtnRetour.setBounds(new Rectangle(137, 244, 119, 39));
    jbtnRetour.setFont(new java.awt.Font("Dialog", 1, 13));
    jbtnRetour.setHorizontalTextPosition(SwingConstants.LEFT);
    jbtnRetour.setIcon(new ImageIcon(new java.net.URL("file:///G:/Documents and Settings/Administrateur/Bureau/Projet Gestion des Note Graphique V3A/Projet Gestion des Note2/retour.gif")));
    jbtnRetour.setText("Retour");
    jbtnRetour.addMouseListener(new java.awt.event.MouseAdapter() {
      public void mouseEntered(MouseEvent e) {
        jbtnRetour_mouseEntered(e);
      }
      public void mouseExited(MouseEvent e) {
        jbtnRetour_mouseExited(e);
      }
    });
    jbtnRetour.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        jbtnRetour_actionPerformed(e);
      }
    });
    this.getContentPane().add(jPanel1, BorderLayout.CENTER);
    jPanel1.add(jScrollPane1, null);
    jPanel1.add(jlblTitre, null);
    jPanel1.add(jbtnRetour, null);
    jScrollPane1.getViewport().add(jTable1, null);
  }
  public void remplir(String filier,int group)
  {
     String  Matricule="";
     String  Nom;
     String  Prenom;
     String  Moyenne;
     String  Montion;
     Vector list_classe= new Vector();
       int  nbr_ligne;
       String [][] Donnée;

        list_classe=cls.Afficher_Classe(filier,group);


     if(list_classe.isEmpty())
     {
       JOptionPane.showMessageDialog(null,"Classe vide   !!!!!!!!!!!","Gestion carnet de notes",JOptionPane.WARNING_MESSAGE);
     }
     else
     {
     nbr_ligne=list_classe.size();
    // tableau des colonne
     String [] Colonne ={"Matricule","Nom","Prenom","Moyenne","Montion"};
    // tableau multidimension des donn�e
      Donnée= new String[nbr_ligne][5];
      jTable1 = new JTable(Donnée,Colonne);
      jTable1.setFont(new java.awt.Font("Dialog", 1, 12));//
      jTable1.setBorder(BorderFactory.createLineBorder(Color.black));
      jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
          for(int i=0;i<list_classe.size();i++)
          {
            Matricule =String.valueOf(((Etudiant)list_classe.elementAt(i)).getMatricle());
            Nom=((Etudiant)list_classe.elementAt(i)).getNom();
            Prenom=((Etudiant)list_classe.elementAt(i)).getPrenom();
            Moyenne=String.valueOf((((Etudiant)list_classe.elementAt(i))).Calcule_Moyenne());
            Montion=((Etudiant)list_classe.elementAt(i)).Montion();
           Donnée[i][0]=Matricule ;
           Donnée[i][1]=Nom  ;
           Donnée[i][2]=Prenom  ;
           Donnée[i][3]=Moyenne ;
           Donnée[i][4]=Montion ;
          }
     }
  }

public void remplir(String filier,int group, String libelle)
{
   String  Matricule;
   String  Nom;
   String  Prenom;
   String  libelle_cour;
   String  Note;
   Vector list_classe= new Vector();
     int  nbr_ligne;
     String [][] Donnée;

      list_classe=cls.Afficher_Classe(filier,group);


   if(list_classe.isEmpty())
   {
     JOptionPane.showMessageDialog(null,"Classe vide   !!!!!!!!!!!","Gestion carnet de notes",JOptionPane.WARNING_MESSAGE);
   }
   else
   {
   nbr_ligne=list_classe.size();
  // tableau des colonne
   String [] Colonne ={"Matricule","Nom","Prenom","Note"};
  // tableau multidimension des donn�e
    Donnée= new String[nbr_ligne][4];
    jTable1 = new JTable(Donnée,Colonne);
    jTable1.setFont(new java.awt.Font("Dialog", 1, 12));//
    jTable1.setBorder(BorderFactory.createLineBorder(Color.black));
    jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
  
        for(int i=0;i<list_classe.size();i++)
        {
          Matricule =String.valueOf(((Etudiant)list_classe.elementAt(i)).getMatricle());
          Nom=((Etudiant)list_classe.elementAt(i)).getNom();
          Prenom=((Etudiant)list_classe.elementAt(i)).getPrenom();
          Note=" Note  :"+((Etudiant)list_classe.elementAt(i)).getnot(0);

         Donnée[i][0]=Matricule ;
         Donnée[i][1]=Nom  ;
         Donnée[i][2]=Prenom ;
         Donnée[i][3]=Note ;
       
        }
        

		
   }
}
  void jbtnRetour_actionPerformed(ActionEvent e) {
    Retour();
  }

  void jbtnRetour_mouseEntered(MouseEvent e) {
setCursor(new Cursor(12));
  }
  void jbtnRetour_mouseExited(MouseEvent e) {
setCursor(new Cursor(0));
  }
  public  String  InputFilier()
 {
   //demande � l'utilisateur � saisir la filier � afficher

        boolean trouve=false;
        String fil1= JOptionPane.showInputDialog(null,"Veuillez saisir le nom de la filiere:   ","Gestion carnet de notes",JOptionPane.QUESTION_MESSAGE);
        if(fil1==null)
        {// si on a choisi Annuler
          fil1="";
        }
        fil1=fil1.toUpperCase().trim();// on va mettre la valeur saisi en majuscule est suprimer les espaces
          // teste si la filier existe
        for(int i=0;i<cls.glossaireFilier.size();i++)
        {
          if(((Classe)cls.glossaireFilier.elementAt(i)).getFilier().equals(fil1))
          {
          trouve=true;
          break;
          }
        }
        if (trouve==false)
        {
          JOptionPane.showMessageDialog(null,"Filiere introuvable!!!!!!!!!!","Attention",JOptionPane.ERROR_MESSAGE);
          return "" ;
        }
        else
          return fil1;
 }
 public int InputGroup(String nom_filier)
{
  int grp;
  boolean trouve;
 /*si la filier existe
         on va demande � l'utilisateur de saisir le group � afficher
         */

         // teste si le group existe
         String gp=JOptionPane.showInputDialog(null,"Veuillez saisir le niveau:   ","Gestion carnet de notes",JOptionPane.QUESTION_MESSAGE);
         if(gp==null ||gp.equals(""))
         gp="0";
         grp=Integer.valueOf(gp.trim()).intValue();
         trouve=false;
         for(int i=0;i<cls.glossaireFilier.size();i++)
       {
         if(((Classe)cls.glossaireFilier.elementAt(i)).getFilier().equals(nom_filier) &&(grp<=((Classe)cls.glossaireFilier.elementAt(i)).getGroup() && grp>0) )
         {
         trouve=true;
         break;
       }
       }
       if(!trouve)
       {
         JOptionPane.showMessageDialog(null,"Niveau introuvable!!!!!!!!!!","Attention",JOptionPane.ERROR_MESSAGE);
      return 0;
       }
       else
       {
         return grp;
       }
 }
 public String InputLibelle( String nom_filier, int grp )
{
  String  lbl;
  boolean trouve;
 /*si la filier existe
         on va demande � l'utilisateur de saisir le group � afficher
         */

         // teste si le group existe
          lbl=JOptionPane.showInputDialog(null,"Veuillez saisir le libele du cours:   ","Gestion carnet de notes",JOptionPane.QUESTION_MESSAGE);
         if(lbl.equals(""))
           return "";
       
         trouve=false;
         for(int i=0;i<cour.glossaireCours.size();i++)
       {
         if(((Cours)cour.glossaireCours.elementAt(i)).getFilier().equals(nom_filier) &&(grp<=((Cours)cour.glossaireCours.elementAt(i)).getGroup() && grp>0)  && (((Cours)cour.glossaireCours.elementAt(i)).getlibeleC().equals(lbl)) )
         {
         trouve=true;
         break;
       }
       }
       if(!trouve)
       {
         JOptionPane.showMessageDialog(null,"liste introuvable !!!!!!!!!!","Attention",JOptionPane.ERROR_MESSAGE);
      return "";
       }
       else
       {
         return lbl;
       }
 }
  public void Retour(){
   dispose() ;
  }


}


